package com.huawei.xme.ch02.t14.teacher;

import com.sun.media.sound.SoftTuning;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author 黄后林
 * @date 2022-10-26 15:39:11
 * @note 程序员是用代码喂出来的
 */
public class Task01 {


    public static void main(String[] args) {

        //{3，1，4，7，2，1，
        //1，2，2}
        char[] array={'3','1','4','7','2','1','1','2','9'};

        Map<Character, Integer> rs = xx(array);
        System.out.println(rs);


    }

    public static Map<Character,Integer> xx(char[] array){

        // 1、把字符和出现的次数 封装成1个map对象  1-3
        Map<Character,Integer> map = new HashMap<>();

        for(int index=0;index<array.length;index++){
            char c = array[index];

            if(map.get(c) == null){
                // 说明没有 c
                map.put(c,1);

            }else{
                // 有
                map.put(c,map.get(c) +1);
            }
        }
        System.out.println(map);


        //2、找字符最大的次数    3
        int max = 0;

        Set<Character> sets = map.keySet();
        System.out.println(sets);

        for( Character c : sets){
            int num =map.get(c);
            if( num > max){
                max = num;
            }
        }
        System.out.println(max);

        //3、 max是出现一次还是出现>=2

        int num =0;
        Set<Character> setList = map.keySet();

        Map<Character,Integer> mapMax = new HashMap<>();

        for(Character c :setList){
            if(map.get(c) == max){
                mapMax.put(c,max);
                num = num+1;
            }
        }
        System.out.println(num);
        System.out.println(mapMax);


        Map<Character,Integer> rs = new HashMap<>();
        if(num>=2){
            //4 如果有2个最大的  谁在数组中最先出现

            for(int inner =0;inner<array.length;inner++){

                char v = array[inner];

                Set<Character> maxSet = mapMax.keySet();
                for(Character c :maxSet){

                    if(v == c){
                        //找到了  此时这个就是最前面的 而且次数是最大的 直接返回 不需要再运行后面的代码
                        rs.put(v, mapMax.get(v));
                        return rs;
                    }

                }



            }

            System.out.println(rs);



        }else{
            return mapMax;
        }
        return null;
    }
}
